package com.banmoon.algorithm.order;

import java.util.Arrays;
import java.util.Random;

/**
 * 插入排序
 */
public class Demo03 {

    public static void main(String[] args) {
        int length = 10;
        int[] arr = new int[length];
        Random random = new Random();
        for (int i = 0; i < length; i++)
            arr[i] = random.nextInt(length);
        System.out.println("排序前的数组：" + Arrays.toString(arr));
        int[] sortArr = sort(arr);
        System.out.println("排序后的数组：" + Arrays.toString(sortArr));
    }

    public static int[] sort(int[] arr){
        // 从第二个元素开始向后遍历
        for (int i = 1; i < arr.length; i++) {
            // 当前元素和前一个元素进行对比，如果当前元素小的话
            if(arr[i]<arr[i-1]){
                // 则记录当前元素进行记录
                int temp = arr[i];
                int j;
                // 对当前元素下标前的元素进行遍历，如果前一个元素比当前元素大，则将前一个元素向后移动位置
                for (j = i-1; j>=0 && temp<arr[j]; j--) {
                    arr[j+1] = arr[j];
                }
                // 直到结束后，将移动的下标，赋值当前元素
                arr[j+1] = temp;
            }
        }
        return arr;
    }

}
